package com.tanjun.thirdservice.web.service.wx;

import com.alibaba.fastjson2.TypeReference;
import com.tanjun.common.enums.Method;
import com.tanjun.thirdservice.web.service.wx.response.WxBaseResponse;

/**
 * 微信基础服务
 */
public interface WxService {

    /**
     * 获取小程序appId
     * @return
     */
    String getAppid();

    /**
     * 获取小程序secret
     *
     * @return
     */
    String getSecret();

    String getBaseUrl();

    /**
     * 像企业微信发送请求
     *
     * @param url           请求地址
     * @param method        方法
     * @param data          数据
     * @param typeReference 返回数据格式
     * @param <T>           返回数据类型
     * @return 返回数据
     */
    <T extends WxBaseResponse> T doRequest(String url, Method method, Object data, TypeReference<T> typeReference);

    /**
     * 像企业微信发送请求(自动带上token)
     *
     * @param url           请求地址
     * @param method        方法
     * @param data          数据
     * @param typeReference 返回数据格式
     * @param <T>           返回数据类型
     * @return 返回数据
     */
    <T extends WxBaseResponse> T doRequestWithToken(String url, Method method, Object data, TypeReference<T> typeReference);

}
